#pragma once
#include "Shape.h"
#include "Point.h"

class Rect :public Shape
{
	//int m_left, m_right, m_top, m_bottom;
	Point m_top_left;
	Point m_bottom_right;
public:
	Rect(int top = 0, int left = 0, int bottom = 0, int right = 0,  colour col = BLACK); //�����������
	Rect(Point& top_left, Point& bottom_right, colour col = BLACK);
	Rect(const Rect&);//����������� �����������
	void Standarting();//����� "������������" ��������������
	//virtual void Inflate(int);
	void SetAll(int left, int right, int top, int bottom);//����� ������� ����������� ���������� ������ ������������ ��������
	//����� ������� ���, ��� � ������ ����� ������ 4 ��������� ������ Getleft,Getright,Gettop,Getbottom
	void GetAll(int& left, int& right, int& top, int& bottom) const;//����� ������� "�������" �������� private-���������� ������.

	~Rect(); //����������

	bool operator==(const Rect& other) const;

	Shape* CopyObj()const;
	double Get_area()const;
	const Point& Get_center()const;
	double Get_distance()const;
	
	Shape& operator=(const Shape& other);
	bool operator==(const Shape& other)const;


	friend std::ostream& operator<<(std::ostream& os, const Rect& rect);
	friend Rect& operator>>(std::ifstream&, Rect& );
};

//std::ostream& operator<<(std::ostream& os, const Rect& rect);
//Rect& operator>>(std::ifstream& is, Rect& rect);